﻿using System;
using CzfRow = System.Collections.Generic.Dictionary<string, string>;
using System.Collections.Generic;

namespace CzfSDK
{
	public interface DBClient
	{
		string db{ get; set;}

		// 创建数据库
		bool CreateDb(string db = null);

		// 创建表结构
		bool CreateTable<T>() where T : CzfModel;

		// 删除表结构
		void RemoveTable<T>() where T : CzfModel;

		// 根据ID获取数据
		CzfRow GetRow<T>(string id) where T : CzfModel;

		// 根据ID创建model
		T GetModel<T>(string id) where T : CzfModel, new();

		// 根据索引获取数据
		CzfRow GetRow<T>(string indexKeys, string indexVals) where T : CzfModel;

		// 根据索引创建model
		T GetModel<T>(string indexKeys, string indexVals) where T : CzfModel, new();

		// 数据更新
		void Update (CzfModel m);

		// 新增数据
		void Create (CzfModel m);

		// 根据索引批量获取数据
		List<CzfRow> GetRows<T> (string indexKeys, string indexVals) where T : CzfModel;

		// 根据索引批量获取数据
		List<T> GetModels<T> (string indexKeys, string indexVals) where T : CzfModel, new();

		// 获取所有数据
		List<CzfRow> GetAllRows<T> () where T : CzfModel;

		// 获取所有数据
		List<T> GetAllModels<T> () where T : CzfModel, new();
	}
}

